<?php  namespace Hdphp\Libs;
class App{
		public static function run(){
			//1.初始化框架
			self::init();
			//注册一个自动载入的函数
		//当实例化一个未找见类的时候，会自动触发当前类【__CLASS__】里面的auto方法
		spl_autoload_register([__CLASS__,"auto"]);
		App::autoRun();
		}
		private static function autoRun(){
			$m = MODULE;//地址栏传来的请求时哪一个模块
			$c = CONTROLLER;//地址栏传来的请求时哪一个控制器
			$a = ACTION;//地址栏传来的请求时哪一个方法
//			拼接   注意转译
			$controller= "\\{$m}\Controller\\{$c}Controller";
			$obj = new $controller;
//			p($controller);
			$obj ->$a();
		}
		private static function auto($cname){
		//在这里加载文件的时候，路径都是根据命名空间来的
		//Home\Controller\IndexController
//		p($cname);
		//p(substr($cname, -10));
		if(substr($cname, -10) == "Controller"){
			//这里的加载没有问题，访问页面的时候就应该能看到IndexController.php当中index方法的输出	
			//控制器s
			$path = "App/" .str_replace("\\","/", $cname) . ".php";
		}else{
			//工具类
			//【Hdphp\Tools\Code】
			//$path = "Hdphp/Tools/Code.php";
//			p($path);
			$path =str_replace("\\", "/", $cname) . ".php";
		}
		require $path;
		}
		private static function init(){
			//$_GET['m']代表所操作的模块
			$m = isset($_GET['m']) ? $_GET : "Home";
			define("MODULE", $m);
			//$_GET['c']代表所操作的控制器
			$c = isset($_GET['c']) ? $_GET : "Index";
			define("CONTROLLER", $c);
			//$_GET['a']代表所操作的操作方法
			$a = isset($_GET['a']) ? $_GET : "index";
			define("ACTION", $a);
			//配置项的加载（注意，一定要先加载系统的配置项，再加载用户自己）
			//需要自己在系统和用户的配置项简单写几个配置
			//先加载系统
			$systemConfig = include 'Config.php';
//			p($systemConfig);
			C($systemConfig);
			//加载用户配置项
			$userConfig = include 'App/Home/Config/Config.php';
//			p($userConfig);
			C($userConfig);
			//设置时区,从配置项进行读取
			//date_default_timezone_set("PRC");
			date_default_timezone_set(C("TIMEZONE"));
			session_id() || session_start();
			
		}
}